package com.atguigui.leetcode;

import java.util.TreeMap;

/**
 * 729.我的日程安排表 I
 * Project: leetcode
 * Package: com.atguigui.leetcode
 * Version: 1.0
 * <p>
 * Created by WJX on 2022/7/5 9:27
 */
public class P729MyCalendarI {


    //leetcode submit region begin(Prohibit modification and deletion)
    class MyCalendar {

        private TreeMap<Integer, Integer> map;

        /**
         * 执行用时：22 ms, 在所有 Java 提交中击败了84.54%的用户
         * 内存消耗：42.4 MB, 在所有 Java 提交中击败了27.21%的用户
         */
        public MyCalendar() {
            map = new TreeMap();
            //给定2个范围
            map.put(-1, -1);
            map.put(Integer.MAX_VALUE, Integer.MAX_VALUE);
        }

        public boolean book(int start, int end) {
            //返回大于或等于给定键的最小键
            Integer a = map.ceilingKey(start);
            //返回小于或等于给定键的最大键
            Integer b = map.floorKey(start);
            // 找到的比start大于等于的必须要 大于end， 找到的小于或等于start的最小键的end必须要比start小
            if (a < end || map.get(b) > start) return false;
            map.put(start, end);
            return true;
        }
    }
}
